#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "archivoConfiguracion.h"
#include "planificador.h"

int32_t iniciarEstructuraConfiguracion() {

	FILE *punteroDelArchivo;

	stConfig.cModoInicio = calloc(1,2);
	stConfig.cIpEscucha = calloc(1,16);
	stConfig.cAlgoritmoPlan = calloc(1,6);
	stConfig.cPathSocketUnix = calloc(1,100);
	stConfig.cActivarLogs = calloc(1,6);


	punteroDelArchivo = fopen("configPPD.txt","r");

		if (!punteroDelArchivo) {
//			log_error(log, PROCESO, "No se pudo abrir el archivo de configuración");
			fclose(punteroDelArchivo);
			return 0;
		}

	fscanf(punteroDelArchivo,
	                    "MODO DE INICIO [C/L]= %s\nPUERTO DE ESCUCHA= %d\nIP ESCUCHA= %s\nALGORITMO DE PLANIFICACION [SCAN/NSCAN]= %s\nPATH SOCKET UNIX= %s\nACTIVAR LOGS [Si/No]= %s\nIDENTIFICADOR DEL DISCO= %d\nCABEZAL= %d\nSECTORES POR PISTA= %d\nCANTIDAD DE PISTAS= %d\nTIEMPO LECTURA EN MS= %d\nTIEMPO ESCRITURA EN MS= %d\nRPM= %d\nTIEMPO SALTO DE PISTAS EN MS= %d",
	                    stConfig.cModoInicio,
	                    &stConfig.iPuertoEscucha,
	                    stConfig.cIpEscucha,
	                    stConfig.cAlgoritmoPlan,
	                    stConfig.cPathSocketUnix,
	                    stConfig.cActivarLogs,
	                    &stConfig.iIdDisco,
	                    &stConfig.iCabezal,
	                    &stConfig.iSectoresPista,
	                    &stConfig.iCantidadPistas,
	                    &stConfig.iTiempoLectura,
	                    &stConfig.iTiempoEscritura,
	                    &stConfig.iRPM,
	                    &stConfig.iTiempoSaltoPistas);


//	log_info(log, "CONFIGURACION", "---Archivo de configuracion del PFS---\r\nIP_LOCAL= <%s>\r\nPUERTO_LOCAL= <%d>\r\nIP_CONEXION= <%s>\r\nPUERTO_CONEXION= <%d>\r\nCANTIDAD DE CONEXIONES= <%d>\r\nTAMANIO_CACHE (EN KB)= <%d>",
//	                    config.sIpLocal,
//	                    config.iPuertoLocal,
//	                    config.sIPConex,
//	                    config.iPuertoConex,
//	                    config.iCantMaxConex,
//	                    config.iTamCache);

	sectoresTotalesDeDisco=stConfig.iCabezal*stConfig.iCantidadPistas*stConfig.iSectoresPista;
	 fclose(punteroDelArchivo);


return 1;
}



///*
// * estructurasPPD.c
// *
// *  Created on: 18/10/2011
// *      Author: utn_so
// */
//
//
//#include "planificador.h"
//
//int32_t BuscoCadenaInt(char *contenidoArchivo, char *palabraABuscar){
//	int32_t valorEncontrado;
//	char *punteroContenidoArchivo=NULL;
//	punteroContenidoArchivo =strstr(contenidoArchivo,palabraABuscar);
//	punteroContenidoArchivo = strtok(punteroContenidoArchivo,"=");
//	punteroContenidoArchivo = strtok(NULL," ");
//	valorEncontrado= atoi(punteroContenidoArchivo);
//return valorEncontrado;
//}
//
//
//char *BuscoCadena(char *contenidoArchivo, char *palabraABuscar){
//	char *valorEncontrado=NULL;
//	char *punteroContenidoArchivo=NULL;
//	punteroContenidoArchivo =strstr(contenidoArchivo,palabraABuscar);
//	punteroContenidoArchivo = strtok(punteroContenidoArchivo,"=");
//	punteroContenidoArchivo = strtok(NULL,";");
//	valorEncontrado=punteroContenidoArchivo;
//return valorEncontrado;
//}
//
//
//int32_t leoArchivo(struct stConfiguracion **stConf){
//	int32_t tamanioArchivo;
//	FILE *punteroDelArchivo;
//	char *contenidoArchivo=NULL;
//
//	punteroDelArchivo = fopen("configPPD.txt","r+");
//
//
//	if (!punteroDelArchivo)
//		{
//		printf("No se pudo abrir el archivo de configuracion\n");
//		fclose(punteroDelArchivo);
//		return 0;
//		}
//	else
//		{
//		fseek(punteroDelArchivo, 0, SEEK_END);
//		tamanioArchivo = ftell(punteroDelArchivo);
//		contenidoArchivo =(char *)calloc(1,(tamanioArchivo+1)*sizeof(char));
//		rewind(punteroDelArchivo);
//		if(fread(contenidoArchivo,sizeof(char),tamanioArchivo+1,punteroDelArchivo))
//			{
//			contenidoArchivo[tamanioArchivo]='\0';
//			(*stConf)->cModoInicio = BuscoCadena(contenidoArchivo,"Modo de Inicio [Connect/Listen]");
//			(*stConf)->iPuertoRaid = BuscoCadenaInt(contenidoArchivo,"Puerto conexion Proceso RAID");
//			(*stConf)->cIpRaid = BuscoCadena(contenidoArchivo,"Dirección IP proceso Raid");
//			(*stConf)->cAlgoritmoPlan = BuscoCadena(contenidoArchivo,"Algoritmo de planificacion [SCAN/FSCAN]");
//			(*stConf)->iPuertoConsola = BuscoCadenaInt(contenidoArchivo,"Puerto escucha de la consola");
//			(*stConf)->cActivarLogs = BuscoCadena(contenidoArchivo,"Activar Logs [Si/No]");
//			(*stConf)->iIdDisco = BuscoCadenaInt(contenidoArchivo,"Identificador del disco");
//			(*stConf)->iCabezal = BuscoCadenaInt(contenidoArchivo,"Cabezal");
//			(*stConf)->iSectoresPista = BuscoCadenaInt(contenidoArchivo,"SectoresPorPista");
//			(*stConf)->iCantidadPistas = BuscoCadenaInt(contenidoArchivo,"CantidadDePistas");
//			(*stConf)->iTiempoLectura = BuscoCadenaInt(contenidoArchivo,"Tiempo de Lectura en ms");
//			(*stConf)->iTiempoEscritura = BuscoCadenaInt(contenidoArchivo,"Tiempo de Escritura en ms");
//			(*stConf)->iRPM = BuscoCadenaInt(contenidoArchivo,"R p m");
//			(*stConf)->iTiempoSaltoPistas = BuscoCadenaInt(contenidoArchivo,"Tiempo de salto de pistas en ms");
//			}
//		else
//			{
//			printf("Error al leer el archivo de configuracion\n");
//
//			free(contenidoArchivo);
//			fclose(punteroDelArchivo);
//			return 0;
//			}
//		}
//	free(contenidoArchivo);
//	fclose(punteroDelArchivo);
//return 1;
//}
//
///*
//int32_t buscaPalabraEnArchivo(int32_t *variableGlobal, char *palabraABuscar)
//{
//	int32_t tamanioArchivo;
//	FILE *punteroDelArchivo;
//	char *punteroContenidoArchivo=NULL;
//	char *contenidoArchivo=NULL;
//	int32_t *variableAuxiliar;
//
//
//	variableAuxiliar=variableGlobal;
//	punteroDelArchivo = fopen("configPPD.txt","r+");
//
//
//	if (!punteroDelArchivo)
//		{
//		printf("No se pudo abrir el archivo de configuracion\n");
//		fclose(punteroDelArchivo);
//		return 0;
//		}
//	else
//		{
//		fseek(punteroDelArchivo, 0, SEEK_END);
//		tamanioArchivo = ftell(punteroDelArchivo);
//		contenidoArchivo =(char *)calloc(1,(tamanioArchivo+1)*sizeof(char));
//		rewind(punteroDelArchivo);
//
//		if(fread(contenidoArchivo,sizeof(char),tamanioArchivo+1,punteroDelArchivo))
//			{
//			contenidoArchivo[tamanioArchivo]='\0';
//			punteroContenidoArchivo =strstr(contenidoArchivo,palabraABuscar);
//
//			if(!punteroContenidoArchivo)
//				{
//				printf("No se encontro la variable global en el archivo de configuracion\n");
//				free(contenidoArchivo);
//				fclose(punteroDelArchivo);
//				return 0;
//				}
//			else
//				{
//				punteroContenidoArchivo = strtok(punteroContenidoArchivo,"=");
//				punteroContenidoArchivo = strtok(NULL," ");
//				*variableAuxiliar=atoi(punteroContenidoArchivo);
//				printf("Se asigno a %s, el valor %d\n",palabraABuscar,atoi(punteroContenidoArchivo));
//
//				}
//			}
//		else
//			{
//			printf("Error al leer el archivo de configuracion\n");
//
//			free(contenidoArchivo);
//			fclose(punteroDelArchivo);
//			return 0;
//			}
//		}
//	free(contenidoArchivo);
//	fclose(punteroDelArchivo);
//return 1;
//}
//
//
//int32_t buscaString(char *palabraABuscar)
//{
//	int32_t tamanioArchivo;
//	FILE *punteroDelArchivo;
//	char *punteroContenidoArchivo=NULL;
//	char *variableAuxiliar=NULL;
//	char *contenidoDelArchivo=NULL;
//
//
//	punteroDelArchivo = fopen("configPPD.txt","r+");
//
//
//	if (!punteroDelArchivo)
//		{
//		printf("Error al abrir el archivo para leer\n");
//
//		fclose(punteroDelArchivo);
//		return 0;
//		}
//	else
//		{
//		fseek(punteroDelArchivo, 0, SEEK_END);
//		tamanioArchivo = ftell(punteroDelArchivo);
//		contenidoDelArchivo =(char *)calloc(1,(tamanioArchivo+1)*sizeof(char));
//		rewind(punteroDelArchivo);
//
//		if(fread(contenidoDelArchivo,sizeof(char),(tamanioArchivo+1),punteroDelArchivo))
//			{
//			contenidoDelArchivo[tamanioArchivo]='\0';
//			punteroContenidoArchivo =strstr(contenidoDelArchivo,palabraABuscar);
//
//			if(!punteroContenidoArchivo)
//				{
//				printf("No se encontro la variable global en el archivo de configuracion\n");
//				free(contenidoDelArchivo);
//				fclose(punteroDelArchivo);
//				return 0;
//				}
//			else
//				{
//				punteroContenidoArchivo = strtok(punteroContenidoArchivo,"=");
//				punteroContenidoArchivo = strtok(NULL,";");
//				variableAuxiliar=punteroContenidoArchivo;
//				memset(&activarConsola,'\0',sizeof(&activarConsola));
//				strcpy(&activarConsola,variableAuxiliar);
//				printf("Se asigno a %s, el valor %s\n",palabraABuscar,activarConsola);
//				free(contenidoDelArchivo);
//				}
//			}
//		else
//			{
//			printf("Error al leer el archivo de configuracion\n");
//			fclose(punteroDelArchivo);
//			free(contenidoDelArchivo);
//			return 0;
//			}
//		}
//	fclose(punteroDelArchivo);
//return 1;
//}
//
//
//int32_t ArchivoDeConfiguracion_leer(void)
//{
//
//	printf("Se inicio el proceso del archivo de configuracion\n");
//
//
//
//	if(buscaPalabraEnArchivo(&puertoFSSyDisco,"Conexion Proceso File System y Disco")&&	buscaString("Activar Consola"))
//
//		{
//		printf("Finalizo correctamente el proceso del archivo de configuracion\n");
//		}
//	else
//		{
//		printf("El proceso del archivo de configuracion finalizo de forma inesperada\n");
//		}
//return 1;
//}
//*/
